package file;

import java.io.File;
import java.io.FileFilter;

/**
 * JDK8之后，java支持了lambda表达式这个特性。
 * lambda可以使用更精简的代码创建匿名内部类，但是该匿名内部类实现的接口只能有一个抽象ff，
 * 否则无法使用
 *
 * 语法：
 * （参数列表）->{
 *     方法体
 * }
 */
public class LambdaDemo1 {
    public static void main(String[] args) {
        FileFilter filter=new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.getName().contains("a");
            }
        };
        FileFilter filter2=(File file)-> {
            return file.getName().contains("a");
        };
        //  lambda表示中参数的类型不需要指定，只需要指定参数名即可。
        FileFilter filter3=( file)-> {
            return file.getName().contains("a");
        };
        //如果方法体中只有一行代码时，方法体的“{}”是可以忽略不写的
        //如果该方法需要返回值，则忽略{}的同时，return关键字也必须一同忽略不写。
        FileFilter filter4=(file)->file.getName().contains("a");
        //如果参数只有一个，则参数列表的”（）“可以忽略不写
        FileFilter filter5=file->file.getName().contains("a");

        File dir=new File(".");
        if (dir.isDirectory()){
            File[] subs=dir.listFiles(file->file.getName().contains("a"));
        }
    }
}
